package com.itheima.tlias.controller;

import java.io.BufferedReader;

public class Test {
    /**
     * 23种设计模式 （GOF设计模式 Gang Of Four）
     * 单例设计模式————解决只需要一个对象的情况
     * 策略模式————替代复杂的if/switch
     * 建造者模式———— 以链式调用的方式替代 类属性赋值时复杂的构造器赋值和set方法赋值
     * 装饰者模式———— 例子（IO流中FileReader和BufferedReader） 以解耦和插拔的方式对一个对象进行增强 ————组合关系
     * 代理模式（动态代理）————对一个类的方法进行增强 ————继承 + 重写
     */


    public static void main(String[] args) {

        /*
        事务概念 ：多条sql作为一组执行
        事务对应的mysql指令
        开启事务 begin
        提交事务 commit
        回滚事务 rollback
        SpringBoot使用声明式的注解来管理事务 不需要手动调用mybatis的commit 和rollback方法

        事务的四大特征；
        A: 原子性 ————要么全部成功，要么全部失败
        C: 一致性 ————数据保持一致
        I: 隔离性 mysql 四大隔离级别
        读已提交————脏读
        读未提交————防止脏读，产生不可重复读
        可重复读————防止脏读以及不可重复读，产生幻读
        串行化————事务按照顺序执行
        D: 持久化 ————数据落盘
        四大隔离级别对应业务增删改查（CRUD）当中出现的问题
        查询————脏读：读到别的事务未提交的数据
        新增/删除————幻读：产生幻行
        修改————不可重复读
         */
    }
}
